package pe.com.bbva.efcap.servidor.modelo.entidad;

import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;


/**
 * The persistent class for the TEF005_SIMULACION database table.
 * 
 */
@Entity
@Table(name="TEF005_SIMULACION")
public class Simulacion implements Serializable {
	private static final long serialVersionUID = 1L;
	private long idSimulacion;
	private Timestamp fechaActualizacion;
	private Timestamp fechaCreacion;
	private String descripcion;
	private String nombreCliente;
	private BigDecimal estado;
	private String usuarioActualizacion;
	private String usuarioCreacion;
	private Cliente cliente;
	private List<DetalleSimulacion> detalleSimulaciones;
	private List<DeudaInstitucionFinanciera> deudaInstitucionFinancieras;
	private List<Comentario> comentarios;

	public Simulacion() {
	}

	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SQ_SIMULACION")
	@SequenceGenerator(sequenceName="SQ_SIMULACION", name = "SQ_SIMULACION", allocationSize = 0)	
	@Column(name="CD_SIMULACION")
	public long getIdSimulacion() {
		return this.idSimulacion;
	}

	public void setIdSimulacion(long idSimulacion) {
		this.idSimulacion = idSimulacion;
	}


	@Column(name="FH_ACTUALIZACION")
	public Timestamp getFechaActualizacion() {
		return this.fechaActualizacion;
	}

	public void setFechaActualizacion(Timestamp fechaActualizacion) {
		this.fechaActualizacion = fechaActualizacion;
	}


	@Column(name="FH_CREACION")
	public Timestamp getFechaCreacion() {
		return this.fechaCreacion;
	}

	public void setFechaCreacion(Timestamp fechaCreacion) {
		this.fechaCreacion = fechaCreacion;
	}


	@Column(name="NB_DESCRIPCION")
	public String getDescripcion() {
		return this.descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}


	@Column(name="NB_NOMBRE_CLIENTE")
	public String getNombreCliente() {
		return this.nombreCliente;
	}

	public void setNombreCliente(String nombreCliente) {
		this.nombreCliente = nombreCliente;
	}


	@Column(name="ST_ESTADO")
	public BigDecimal getEstado() {
		return this.estado;
	}

	public void setEstado(BigDecimal estado) {
		this.estado = estado;
	}


	@Column(name="TX_USU_ACTUALIZAC")
	public String getUsuarioActualizacion() {
		return this.usuarioActualizacion;
	}

	public void setUsuarioActualizacion(String usuarioActualizacion) {
		this.usuarioActualizacion = usuarioActualizacion;
	}


	@Column(name="TX_USU_CREACION")
	public String getUsuarioCreacion() {
		return this.usuarioCreacion;
	}

	public void setUsuarioCreacion(String usuarioCreacion) {
		this.usuarioCreacion = usuarioCreacion;
	}


	//bi-directional many-to-one association to Cliente
	@ManyToOne(fetch=FetchType.EAGER, cascade=CascadeType.ALL)
	@JoinColumn(name="CD_CLIENTE")
	public Cliente getCliente() {
		return this.cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}


	//bi-directional many-to-one association to DetSimulac
	@OneToMany(mappedBy="simulacion")
	public List<DetalleSimulacion> getDetalleSimulaciones() {
		return this.detalleSimulaciones;
	}

	public void setDetalleSimulaciones(List<DetalleSimulacion> detalleSimulaciones) {
		this.detalleSimulaciones = detalleSimulaciones;
	}

	public DetalleSimulacion addDetSimulac(DetalleSimulacion detSimulac) {
		getDetalleSimulaciones().add(detSimulac);
		detSimulac.setSimulacion(this);

		return detSimulac;
	}

	public DetalleSimulacion removeDetSimulac(DetalleSimulacion detSimulac) {
		getDetalleSimulaciones().remove(detSimulac);
		detSimulac.setSimulacion(null);

		return detSimulac;
	}


	//bi-directional many-to-one association to DeudaIf
	@OneToMany(mappedBy="simulacion")
	public List<DeudaInstitucionFinanciera> getDeudaInstitucionFinancieras() {
		return this.deudaInstitucionFinancieras;
	}

	public void setDeudaInstitucionFinancieras(List<DeudaInstitucionFinanciera> deudaInstitucionFinancieras) {
		this.deudaInstitucionFinancieras = deudaInstitucionFinancieras;
	}

	public DeudaInstitucionFinanciera addDeudaIf(DeudaInstitucionFinanciera deudaIf) {
		getDeudaInstitucionFinancieras().add(deudaIf);
		deudaIf.setSimulacion(this);

		return deudaIf;
	}

	public DeudaInstitucionFinanciera removeDeudaIf(DeudaInstitucionFinanciera deudaIf) {
		getDeudaInstitucionFinancieras().remove(deudaIf);
		deudaIf.setSimulacion(null);

		return deudaIf;
	}


	//bi-directional many-to-one association to Comentario
	@OneToMany(mappedBy="simulacion")
	public List<Comentario> getComentarios() {
		return this.comentarios;
	}

	public void setComentarios(List<Comentario> comentarios) {
		this.comentarios = comentarios;
	}

	public Comentario addComentario(Comentario comentario) {
		getComentarios().add(comentario);
		comentario.setSimulacion(this);

		return comentario;
	}

	public Comentario removeComentario(Comentario comentario) {
		getComentarios().remove(comentario);
		comentario.setSimulacion(null);

		return comentario;
	}

}
